#if 0
#ifndef GLOBAL_DATA_H
#define GLOBAL_DATA_H

#include <cstdlib>

#define DT_NORMALIZATION_CONST 1.26
#define ARCADE_DEAD_BAND 10
#define HANG_SAFETY_ON 1

// Launcher speed and tilt presets
#define LAUNCHER_PRESET_1_SPEED 0
#define LAUNCHER_PRESET_1_TILT 0
#define LAUNCHER_PRESET_2_SPEED 0
#define LAUNCHER_PRESET_2_TILT 0

// ******************************************************* //
// ********** ELECTRONICS CHANNEL SPECIFICATION ********** //

// Driver Control Array Slots; 0 - 3
#define FIELD_JOYSTICK 0
#define FIELD_BUTTONS 1
#define ROBOT_JOYSTICK 2
#define ROBOT_BUTTONS 3
	
// Driver Control Slots
#define JOYSTICK_DRIVER_1_PORT 1
#define JOYSTICK_DRIVER_2_PORT 2
#define JOYSTICK_OPERATOR_1_PORT 3
#define JOYSTICK_OPERATOR_2_PORT 4
	
// Driver Control Buttons
// Drive train
#define JOYSTICK_ARCADE_TOGGLE 3
// Spautla
#define SPATULA_UP 0
#define SPATULA_DOWN 0
// Hang
#define HANG_EXTENDED 0
#define HANG_RETRACTED 0
#define HANG_SAFETY_SWITCH 0
// Hopper
#define HOPPER_SWITCH 0
#define HOPPER_KICKER 0
// Launcher
#define LAUNCHER_FIRE_BUTTON 0
#define LAUNCHER_PRESET_SWITCH 0
#define LAUNCHER_MANUAL_ANGLE 0
#define LAUNCHER_MANUAL_SPEED 0
// Other stuff
#define VISION_CONTROL_CALIBRATION 0
#define BIG_RED_SAFETY_BUTTON 0

// PWM Slots
#define DRIVETRAIN_L_1_PWM 1
#define DRIVETRAIN_L_2_PWM 2
#define DRIVETRAIN_R_1_PWM 3
#define DRIVETRAIN_R_2_PWM 4
#define SPATULA_PWM 5
#define LAUNCHER_PWM 6
#define TILT_PWM 7
	
// Digitual Input Slots
#define LEFT_ENCODER_A_DI 1
#define LEFT_ENCODER_B_DI 2
#define RIGHT_ENCODER_A_DI 3
#define RIGHT_ENCODER_B_DI 4
	
// Solenoid Slots
#define SOLENOID_HOPPER_CONTAINER 1
#define SOLENOID_HOPPER_DISC 2
#define SOLENOID_HOPPER_KICKER 3
#define SOLENOID_HANG_A 4
#define SOLENOID_HANG_B 5
#define SOLENOID_SPATULA 6
	
// Analog Input Slots
#define MOTOR_EMF_AI 1
#define ACCELEROMETER_AI 2
#define POTENTIOMETER_AI 2
#define GYRO_AI 3


class GlobalData 
{

public:
	GlobalData();
	~GlobalData();
	//Gives every class the same instance of GlobalData
	static GlobalData* GetInstance();

#if 0	
	// ********************************** //
	// ********** Sensor Input ********** //
	
	// DRIVER CONTROL INPUT
	// Drive train
	float i_joystick_1_x;
	float i_joystick_1_y;
	float i_joystick_2_x;
	float i_joystick_2_y;
	bool i_joystickArcadeToggle;
	// Spatula
	bool i_spatulaUp;
	bool i_spatulaDown;
	// Hang
	bool i_hangExtended;
	bool i_hangRetracted;
	bool i_hangSafetySwitch;
	// Hopper
	bool i_hopperSwitch;
	bool i_hopperKicker;
	// Launcher
	bool i_launcherFireButton;
	float i_launcherPresetSwitch;	
	float i_launcherManualAngle;
	float i_launcherManualSpeed;
	// Other stuff
	bool i_visionControlCalibration;
	bool i_bigRedSafetyButton;
	
	
	// Sensor Inputs
	int i_encoderLeft;
	int i_encoderRight;
	float i_gyroAngle;
	bool i_hopperContainerState;
	bool i_hopperDiscState;
	bool i_hopperKickerState;
	int i_launcherSpeedBackEMF;
	
	
	// ************************************* //
	// ********** ACTUATOR OUTPUT ********** //
	// Drive train
	double o_drivetrainLeft;
	double o_drivetrainRight;
	// Spatula
	bool o_spatula; 								// OMNOMNOM
	// Hang
	bool o_hang;
	// Hopper
	bool o_hopperContainer;
	bool o_hopperDisc;
	bool o_hopperKicker;
	// Launcher
	double o_launcherSpeed;
	double o_launcherTilt;
	bool o_launcherLaunch;
	
	
#if 0
	// LAUNCHER SPEED AND TILT PRESETS
	static const double LAUNCHER_PRESET_1_SPEED = 0;
	static const double LAUNCHER_PRESET_1_TILT = 0;
	static const double LAUNCHER_PRESET_2_SPEED = 0;
	static const double LAUNCHER_PRESET_2_TILT = 0;
	
	
	// ******************************************************* //
	// ********** ELECTRONICS CHANNEL SPECIFICATION ********** //
	
	// Driver Control Array Slots; 0 - 3
	static const short FIELD_JOYSTICK = 0;
	static const short FIELD_BUTTONS = 1;
	static const short ROBOT_JOYSTICK = 2;
	static const short ROBOT_BUTTONS = 3;
	
	// Driver Control Slots
	static const short JOYSTICK_DRIVER_1_PORT = 1;
	static const short JOYSTICK_DRIVER_2_PORT = 2;
	static const short JOYSTICK_OPERATOR_1_PORT = 3;
	static const short JOYSTICK_OPERATOR_2_PORT = 4;
	
	// Driver Control Buttons
    // Drive train	   Driver 1
	static const short JOYSTICK_ARCADE_TOGGLE;
    // Spautla         Driver 2
	static const short SPATULA_UP;
	static const short SPATULA_DOWN;
	// Hang
	static const short HANG_EXTENDED;
	static const short HANG_RETRACTED;
	static const short HANG_SAFETY_SWITCH;
	// Hopper
	static const short HOPPER_SWITCH;
	static const short HOPPER_KICKER;
	// Launcher
	static const short LAUNCHER_FIRE_BUTTON;
	static const short LAUNCHER_PRESET_SWITCH;
	static const short LAUNCHER_MANUAL_ANGLE;
	static const short LAUNCHER_MANUAL_SPEED;
	// Other stuff
	static const short VISION_CONTROL_CALIBRATION;
	static const short BIG_RED_SAFETY_BUTTON;
	
	
	//PWM Slots
	static const short DRIVETRAIN_L_1_PWM = 1;
	static const short DRIVETRAIN_L_2_PWM = 2;
	static const short DRIVETRAIN_R_1_PWM = 3;
	static const short DRIVETRAIN_R_2_PWM = 4;
	static const short SPATULA_PWM = 5;
	static const short LAUNCHER_PWM = 6;
	static const short TILT_PWM = 7;
	
	//Digital Input Slots
	static const short LEFT_ENCODER_A_DI = 1;
	static const short LEFT_ENCODER_B_DI = 2;
	static const short RIGHT_ENCODER_A_DI = 3;
	static const short RIGHT_ENCODER_B_DI = 4;
	
	// Solenoid Slots
	static const short SOLENOID_HOPPER_CONTAINER = 1;
	static const short SOLENOID_HOPPER_DISC = 2;
	static const short SOLENOID_HOPPER_KICKER = 3;
	static const short SOLENOID_HANG_A = 4;
	static const short SOLENOID_HANG_B = 5;
	static const short SOLENOID_SPATULA = 6;
	
	/*
	static const short COMPRESSOR_SWITCH = 5;
	static const short SOLENOID_5_DI = 6;
	static const short SOLENOID_1_DI = 7;
	static const short SOLENOID_2_DI = 8;
	static const short SOLENOID_3_DI = 9;
	static const short SOLENOID_4_DI = 10;
	
	//Solenoid Slots
	static const short SOLENOID_1_A = 1;
	static const short SOLENOID_1_B = 2;
	static const short SOLENOID_2_A = 3;
	static const short SOLENOID_2_B = 4;
	static const short SOLENOID_3 = 5;
	static const short SOLENOID_4 = 6;
	static const short SOLENOID_5 = 7;
	static const short SOLENOID_6 = 8;
	*/

	//Analog Input Slots
	static const short MOTOR_EMF_AI = 1;
	static const short ACCELEROMETER_AI = 2;
	static const short POTENTIOMETER_AI = 2;
	static const short GYRO_AI = 3;	

#endif
#endif

private:
	//The instance of GlobalData that every class gets
	static GlobalData* m_globals;
	
};

#endif
#endif
